The present invention relates to a method and system for capturing a software image from a source environment and transferring it to a target environment.
As the complexity of Internet Technology (IT) systems and the time to install and configure an environment increases, there is a growing need to efficiently replicate images or environments across multiple systems.
At the most basic level, an image encapsulates the data, applications and operating systems that reside on a physical or virtual machine. Organizations are beginning to view the data centre as a set of portable images instead of a diverse mix of a servers, operating systems, applications and data. The ability to profile, move, copy, protect and replicate these images between physical and virtual hosts is a key enabler for operational efficiency and business success.
One of the key tasks required to migrate an image is the ability to capture the image, moving it to a central repository before customizing and deploying it to other targets. Different methods are available to capture an image each one with its advantages and its drawbacks.
It is possible to read the sectors of the source disk and copy them to the target disk. This is very inefficient as the source disk may be fragmented and some sectors can be empty.
An improved approach is to copy only the allocated sectors or blocks of the source disk. However, if the source disk is fragmented, the process can be inefficient as useless data will be copied as well.
An alternative is to copy files and elements of the source system at the file system level. The advantage is that the output is defragmented on the target system, and it is much faster to execute than the previous methods, as the amount of data to process is smaller. However the copy agents must be able to manage the file systems natively. This is not always possible as there exist many different varieties of file systems and they are often poorly documented.
These techniques can be applied to virtual machines as well. Virtual machines are often handled as files at the hypervisor level. This creates several inefficiencies as the size of the virtual machine footprint on the disk can only grow as the hypervisor is in general unable to detect which hard disk blocks are not used by the virtual machine.